var MongoClient = require('mongodb').MongoClient

// 连接数据库
function _connectDB (callback) {
  var url = 'mongodb://localhost:27017/blog'
  MongoClient.connect(url, function (err, db) {
    if (err) {
      callback(err, null)
      return
    }
    callback(err, db)
  })
}

exports.insertOneData = function (collectionName, json, callback) {
  // 插入数据
  _connectDB(function (err, db) {
    db.collection(collectionName).insertOne(json, function (err, result) {
      callback(err, result)
    })
  })
}
exports.find = function (collectionName, json, C, D) {
  let result = []
  if (arguments.length === 3) {
    // 参数C 是callback
    var callback = C
    var skipNumber = 0
    var limit = 0
  }else if (arguments.length === 4) {
    var callback = D
    var args = C
    // 跳过条数
    var skipNumber = args.pageamount * args.page || 0
    // 数目限制
    var limit = args.pageamount || 0
  } else {
    throw new Error('参数必须是3个或者4个')
    return
  }
  _connectDB(function (err, db) {
    var cursor = db.collection(collectionName).find(json).skip(skipNumber).limit(limit);
    cursor.each(function (err, doc) {
      if (err) {
        callback(err, null)
        db.close()
        return
      }
      if (doc !== null) {
        result.push(doc)
      } else {
        // 没有更多文档
        callback(null, result)
      }
    })
  })
}

exports.deleteData = function (collectionName, json, callback) {
  // 删除
  _connectDB(function (err, db) {
    db.collection(collectionName).deleteMany(
      json,
      function (err, results) {
        callback(err, results)
      }
    )
  })
}
// 修改
exports.updateData = function (collectionName, json1, json2, callback) {
  _connectDB(function (err, db) {
    db.collection(collectionName).updateMany(
      json1,
      json2,
      function (err, result) {
        callback(err, result)
      }
    )
  })
}